HAL SD constants migration

This section provides information about HAL SD constants for STM32 HAL1 to HAL2 migration.

Many constants previously defined in hal_sd.h have been removed from the HAL public APIs. Their definitions are now maintained internally within the HAL and core drivers, reflecting a design change where such macros are used internally by the HAL implementation rather than being exposed for direct use in application code.

HAL SD block size identifier

HAL1

HAL2

#define BLOCKSIZE

Removed in HAL2; used internally in HAL1 and do not affect user level operation.


HAL SD card speed type

HAL1

HAL2

#define CARD_HIGH_SPEED
#define CARD_NORMAL_SPEED
#define CARD_ULTRA_HIGH_SPEED

Removed in HAL2, used internally in HAL1 and do not affect user level operation.


HAL SD card type identifiers

HAL1

HAL2

#define CARD_SDHC_SDXC
#define CARD_SDSC
#define CARD_SECURED

Removed in HAL2, used internally in HAL1 and do not affect user level operation.


HAL SD card version identifiers

Note

  • In HAL1, the driver classifies cards’ specification versions into two groups using CARD_V1_X (1.x and earlier) against CARD_V2_X (2.x and later).

  • In HAL2, version reporting is optional (enable USE_HAL_SD_GET_SPEC_VERSION). When enabled, the exact specification is exposed via hal_sd_specification_version_t (1.xx–6.xx), giving finer resolution.

HAL1

HAL2




#define CARD_V1_X
#define CARD_V2_X
typedef enum
{
 HAL_SD_SPECIFICATION_VERSION_1_00_OR_1_01,
 HAL_SD_SPECIFICATION_VERSION_1_10,
 HAL_SD_SPECIFICATION_VERSION_2_00,
 HAL_SD_SPECIFICATION_VERSION_3_0X,
 HAL_SD_SPECIFICATION_VERSION_4_XX,
 HAL_SD_SPECIFICATION_VERSION_5_XX,
 HAL_SD_SPECIFICATION_VERSION_6_XX,
 HAL_SD_SPECIFICATION_VESION_UNSUPPORTED
} hal_sd_specification_version_t;

HAL SD card state identifiers

HAL1

HAL2



#define HAL_SD_CARD_READY
#define HAL_SD_CARD_IDENTIFICATION
#define HAL_SD_CARD_STANDBY
#define HAL_SD_CARD_TRANSFER
#define HAL_SD_CARD_SENDING
#define HAL_SD_CARD_RECEIVING
#define HAL_SD_CARD_PROGRAMMING
#define HAL_SD_CARD_DISCONNECTED
#define HAL_SD_CARD_ERROR
typedef enum
{
  HAL_SD_CARD_READY,
  HAL_SD_CARD_IDENTIFICATION,
  HAL_SD_CARD_STANDBY,
  HAL_SD_CARD_TRANSFER,
  HAL_SD_CARD_SENDING,
  HAL_SD_CARD_RECEIVING,
  HAL_SD_CARD_PROGRAMMING,
  HAL_SD_CARD_DISCONNECTED,
  HAL_SD_CARD_ERROR
} hal_sd_card_state_t;

HAL SD error codes

HAL1

HAL2

#define HAL_SD_ERROR_NONE
#define HAL_SD_ERROR_CMD_CRC_FAIL
#define HAL_SD_ERROR_DATA_CRC_FAIL
#define HAL_SD_ERROR_CMD_RSP_TIMEOUT
#define HAL_SD_ERROR_DATA_TIMEOUT
#define HAL_SD_ERROR_TX_UNDERRUN
#define HAL_SD_ERROR_RX_OVERRUN
#define HAL_SD_ERROR_ADDR_MISALIGNED
#define HAL_SD_ERROR_BLOCK_LEN_ERR
#define HAL_SD_ERROR_ERASE_SEQ_ERR
#define HAL_SD_ERROR_BAD_ERASE_PARAM
#define HAL_SD_ERROR_WRITE_PROT_VIOLATION
#define HAL_SD_ERROR_LOCK_UNLOCK_FAILED
#define HAL_SD_ERROR_COM_CRC_FAILED
#define HAL_SD_ERROR_ILLEGAL_CMD
#define HAL_SD_ERROR_CARD_ECC_FAILED
#define HAL_SD_ERROR_CC_ERR
#define HAL_SD_ERROR_GENERAL_UNKNOWN_ERR
#define HAL_SD_ERROR_STREAM_READ_UNDERRUN
#define HAL_SD_ERROR_STREAM_WRITE_OVERRUN
#define HAL_SD_ERROR_CID_CSD_OVERWRITE
#define HAL_SD_ERROR_WP_ERASE_SKIP
#define HAL_SD_ERROR_CARD_ECC_DISABLED
#define HAL_SD_ERROR_ERASE_RESET
#define HAL_SD_ERROR_AKE_SEQ_ERR
#define HAL_SD_ERROR_INVALID_VOLTRANGE
#define HAL_SD_ERROR_ADDR_OUT_OF_RANGE
#define HAL_SD_ERROR_REQUEST_NOT_APPLICABLE
#define HAL_SD_ERROR_PARAM
#define HAL_SD_ERROR_UNSUPPORTED_FEATURE
#define HAL_SD_ERROR_BUSY
#define HAL_SD_ERROR_DMA
#define HAL_SD_ERROR_TIMEOUT

#define HAL_SD_ERROR_INVALID_CALLBACK
#define HAL_SD_ERROR_NONE
#define HAL_SD_ERROR_CMD_CRC_FAIL
#define HAL_SD_ERROR_DATA_CRC_FAIL
#define HAL_SD_ERROR_CMD_RSP_TIMEOUT
#define HAL_SD_ERROR_DATA_TIMEOUT
#define HAL_SD_ERROR_TX_UNDERRUN
#define HAL_SD_ERROR_RX_OVERRUN
#define HAL_SD_ERROR_ADDR_MISALIGNED
#define HAL_SD_ERROR_BLOCK_LEN_ERR
#define HAL_SD_ERROR_ERASE_SEQ_ERR
#define HAL_SD_ERROR_BAD_ERASE_PARAM
#define HAL_SD_ERROR_WRITE_PROT_VIOLATION
#define HAL_SD_ERROR_LOCK_UNLOCK_FAILED
#define HAL_SD_ERROR_COM_CRC_FAILED
#define HAL_SD_ERROR_ILLEGAL_CMD
#define HAL_SD_ERROR_CARD_ECC_FAILED
#define HAL_SD_ERROR_CC_ERR
#define HAL_SD_ERROR_GENERAL_UNKNOWN_ERR
#define HAL_SD_ERROR_STREAM_READ_UNDERRUN
#define HAL_SD_ERROR_STREAM_WRITE_OVERRUN
#define HAL_SD_ERROR_CID_CSD_OVERWRITE
#define HAL_SD_ERROR_WP_ERASE_SKIP
#define HAL_SD_ERROR_CARD_ECC_DISABLED
#define HAL_SD_ERROR_ERASE_RESET
#define HAL_SD_ERROR_AKE_SEQ_ERR
#define HAL_SD_ERROR_INVALID_VOLTRANGE
#define HAL_SD_ERROR_ADDR_OUT_OF_RANGE
#define HAL_SD_ERROR_REQUEST_NOT_APPLICABLE
#define HAL_SD_ERROR_INVALID_PARAM
#define HAL_SD_ERROR_UNSUPPORTED_FEATURE
#define HAL_SD_ERROR_BUSY
#define HAL_SD_ERROR_DMA
#define HAL_SD_ERROR_TIMEOUT

Removed; callbacks are handled differently in HAL2. For more details refer to Individual callback registration APIs replace global register and unregister functions.


HAL SD context types

HAL1

HAL2

#define SD_CONTEXT_DMA
#define SD_CONTEXT_IT
#define SD_CONTEXT_NONE
#define SD_CONTEXT_READ_MULTIPLE_BLOCK
#define SD_CONTEXT_READ_SINGLE_BLOCK
#define SD_CONTEXT_WRITE_MULTIPLE_BLOCK
#define SD_CONTEXT_WRITE_SINGLE_BLOCK

Removed; these constants were used internally in HAL1 and do not impact user-level operations.